/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.furb.trabalhoFinal.Utils;


import br.com.furb.trabalhoFinal.DAO.DAOColaborador;
import br.com.furb.trabalhoFinal.Exceptions.InvalidLogonUserException;
import br.com.furb.trabalhoFinal.model.Colaborador;
import br.com.furb.trabalhoFinal.view.LoginTela;
import br.com.furb.trabalhoFinal.view.TelaPrincipal;
import java.util.Map;
import javax.swing.JOptionPane;

/**
 * @author PauloWeber
 */
public class Aplicacao {

  private Colaborador usuarioLogado;
  private static Aplicacao aplicacao;

  public Colaborador getUsuarioLogado() {
    return usuarioLogado;
  }

  public void login(String userName, String senha) throws InvalidLogonUserException{
    DAOColaborador dao = new DAOColaborador();
    Map<Integer, Colaborador> colaboradores = dao.getColaboradoresByNomeAcesso(userName);
    for (Colaborador colaborador : colaboradores.values()) {
      if (colaborador.getSenha().isEmpty()) {
        String xSenha = senha;
        String xSenhaConfirmar = JOptionPane.showInputDialog("Usuário não possuia senha cadastrada, insira novamente a senha para confirmar.");
        
        while(!(xSenha.equals(xSenhaConfirmar))){
          xSenha = JOptionPane.showInputDialog("Senha Informada não é igual a anterior, informe novamente.");
          xSenhaConfirmar = JOptionPane.showInputDialog("Digite a senha novamente para confirmar");
        }
        colaborador.setSenha(xSenha);
        return;
      }

     if(colaborador.getSenha().equals(senha)){
       usuarioLogado = colaborador;
       return;
     }
     throw new InvalidLogonUserException();
    }
  }

  public void logoff(){
    usuarioLogado = null;
  }

  public void iniciarSistema(){
    if(usuarioLogado == null){
      LoginTela loginTela = new LoginTela();
      loginTela.setVisible(true);
      while(loginTela.isVisible()){
        try {
          Thread.sleep(100);
        } catch (InterruptedException ex) {
          throw new RuntimeException("DEU MERDA");
        }
      }
    }
  }

  public static Aplicacao getInstance(){
    if(aplicacao == null){
      aplicacao = new Aplicacao();
    }
    return aplicacao;
  }

  public void abrirTelaPrincipal(){
    TelaPrincipal telaPrincipal = new TelaPrincipal();
    telaPrincipal.setVisible(true);
  }

}
